const { app, BrowserWindow } = require('electron')
const path = require('path')
const WinState = require('electron-win-state').default

function createWindow () {

  const winState = new WinState({ 
    defaultWidth: 1600,
    defaultHeight: 1000,
  })

  // 创建浏览器窗口。
  const mainWindow = new BrowserWindow({
    ...winState.winOptions,
    show: false,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  // 加载应用程序的 index.html 文件。
  // mainWindow.loadFile('./dist/index.html')
  mainWindow.loadURL('http://localhost:5173/')

  // 打开开发者工具（DevTools）。
  mainWindow.webContents.openDevTools()

  mainWindow.once('ready-to-show', () => {
    mainWindow.show()
  })

  // 管理窗口用户可以调整大小
  winState.manage(mainWindow)
}

// 当 Electron 完成初始化并准备创建浏览器窗口时，将调用此方法。
// 在此事件发生后才能使用某些 API。
app.whenReady().then(() => {
  createWindow()

  app.on('activate', function () {
    // 在 macOS 上，当单击 dock 图标且没有其他窗口打开时，重新创建应用程序中的窗口是常见的操作。
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

// 在所有窗口关闭时退出应用程序，但在 macOS 上除外。在 macOS 上，应用程序及其菜单栏通常会保持活动状态，直到用户使用 Cmd + Q 显式退出。
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

// 在此文件中，可以包含应用程序的其他主进程特定代码。
// 也可以将它们放在单独的文件中并在此处进行引入。